// electron/preload.js
const { contextBridge, ipcRenderer } = require('electron')
const path = require('path')
console.log('[preload] injected, electron:', process.versions.electron)

// 将绝对路径转换成 file:// URL，跨平台可用
function pathToFileUrl(p) {
  // 处理空路径或无效路径
  if (!p || typeof p !== 'string' || p.trim() === '') return ''
  
  try {
    const isWin = process.platform === 'win32'
    // 标准化路径分隔符
    const normalized = isWin ? p.replace(/\\/g, '/') : p
    const prefix = isWin ? 'file:///' : 'file://'
    
    // 使用encodeURIComponent处理路径中的特殊字符，但保留路径分隔符
    const encodedPath = normalized.split('/').map(part => {
      // 避免对空部分进行编码
      if (!part || part.trim() === '') return part
      return encodeURIComponent(part)
    }).join('/')
    
    const result = prefix + encodedPath
    return result
  } catch (e) {
    console.error('pathToFileUrl转换失败:', p, e)
    return ''
  }
}

// 暴露给渲染进程的 API
contextBridge.exposeInMainWorld('native', {
  /**
   * 打开系统文件选择对话框，选音频文件
   * @returns Promise<string|null> 绝对路径，取消时为 null
   */
  pickAudio: () => ipcRenderer.invoke('dialog:pick-audio'),

  /**
   * 把绝对路径转为 file:// URL
   * @param {string} p
   * @returns {string}
   */
  pathToFileUrl,
  // 
  openFolder: (folderPath) => ipcRenderer.invoke('dialog:open-folder', folderPath),
  // 选择音色文件夹
  selectVoiceFolder: () => ipcRenderer.invoke('select-voice-folder')
})



